It is, of course, well known that computers use disks for the storage of data. Over the course of years as the CPU and other components of the computer architecture have become faster and faster the data retrieval speed (bandwidth) from these disks has also become faster. Many arrangements have been used, including interleaving, stripping, the concurrent use of multiple disks, high speed caching and including many forms of "look ahead" processing. All of which have not kept up with the continued advances in CPU processing speeds.
One solution to the problem which has only limited success is to partition the disk so that different users have access to only a preassigned disk space. This solution does not solve the multiple access problem with more than one user trying to obtain data from the disk at the same time, albeit from different apportioned disk spaces.
Another solution has been to allow certain access to have "immediate" data retrieval capability, almost on an interrupt basis. Here again, only one user can obtain data at a time using such a retrieval system. In such a system the user gives the system a number of bytes per second (or some other measure of desired access) and the system operates to provide this magnitude of throughput; however, such systems can only do this for what is called direct access to the disk. Thus, until the request for this group is met, no other application can access the storage. Accordingly, only one group has priority and everybody else waits.
Care must also be taken to avoid what is known as priority inversion. This results when a user has the lowest priority on the system (perhaps being allowed to have 1% of the CPU) and that user makes a high number of disk requests. Inversion occurs because CPU consumption stops as soon as a disk request is made and the required operation does not use the full time slot allotted. In such a situation, the user gets a higher priority to make up for the under utilization of the CPU. Thus, in such a situation, the 1% user can effectively stop the entire system. The problem is compounded when large data transfers are needed, such as a backup operation when much or all of the disk data is transferred to another storage medium, such as to a magnetic tape. Or when a large amount of data is required for a particular operation. Often in these situations if the data retrieval bandwidth is not fast enough the operation fails. For example, if the data does not come off of the disk fast enough to keep up with the tape streaming speed then the tape shuts down and the transfer process becomes inefficient. Applications that must wait for data retrieval often also shut down or shed load so as to match themselves to accommodate the data retrieval bandwidth.
Further compounding the problem is the fact that often many users share the same system, each user having different requirements. Thus, in a university setting many different departments may share the same system. Thus, the math department and the geology departments both may share the same system with the registrar's office where the class scheduling application resides. Thus, the situation can occur (and often does) that one or more of these departments may require disk bandwidth at a time when the other user also demands bandwidth. In this situation simply apportioning the disk among these users (while it solves the disk storage space availability problem) does not solve the problem of simultaneous data access. Also, giving one of the users direct access to the disk will result in the other users not being able to access their data at certain times.
Compounding the problem even further is the fact that certain users will demand equal access with another user, or will demand access in some proportion to the other users.
Thus, there is a need in the art for a system that will allow access to a data storage medium, such as a computer disk drive, on a controllable basis.
There is a further need in the art for such a system which can be selectively adapted so that certain users can be assured of access in a selected proportion to other users.
There is a still further need in the art for a storage access system which will maximize the apparent available data retrieval bandwidth for system users.
There is a need in the art for a storage access system which can be arranged to fairly and consistently apportion the input/output (I/O) between competing user applications allowing each such user application to achieve its apportioned usage.